/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package CPS.Core.TODOLists;
import CPS.UI.Swing.CPSDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
*
* @author crcarter
*/
public class GoogleCaptchaDialog extends CPSDialog
implements ActionListener {
JButton btnCancel, btnLogin;
JButton btnLaunch;
URL captchaUrl = null;
boolean cancelled = false;
JTextField captchaAnswer;
public GoogleCaptchaDialog() {
super("CAPTCHA Required" );
}
public void setCaptchaUrl( URL captchaUrl ) {
this.captchaUrl = captchaUrl;
}
public String getCaptchaAnswer() {
return captchaAnswer.getText();
}
@Override
protected void buildContentsPanel() {
jplContents.add( new JLabel( "<html><font size=\"-2\">" +
"Google is requesting that you complete a CAPTCHA<br> " +
"(one of those funny fuzzy word puzzles) before you<br> " +
"can continue. Click the button to view the CAPTCHA<br>" +
"in your web browser, then enter the answer in the<br>" +
"box below." +
"" ),
"align center, spanx 2, wrap" );
btnLaunch = new JButton("View CAPTCHA in Browser");
btnLaunch.addActionListener( this );
jplContents.add( btnLaunch, "span 2, align center, wrap ");
jplContents.add( new JLabel("What's it say?"), "align right" );
captchaAnswer = new JTextField( 15 );
jplContents.add( captchaAnswer, "wrap" );
contentsPanelBuilt = true;
}
@Override
protected void fillButtonPanel() {
btnLogin = new JButton( "OK" );
btnCancel = new JButton( "Cancel" );
btnLogin.addActionListener(this);
btnCancel.addActionListener(this);
jplButtons.add( btnCancel );
jplButtons.add( btnLogin );
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if ( source == btnLaunch ) {
if ( captchaUrl == null ) {
System.err.println( "No CAPTCHA URL defined" );
}
else if( java.awt.Desktop.isDesktopSupported() ) {
java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
if( desktop.isSupported( java.awt.Desktop.Action.BROWSE ) ) {
try {
desktop.browse( captchaUrl.toURI() );
} catch ( Exception f ) {
f.printStackTrace();
}
}
}
}
else if ( source == btnLogin ) {
setVisible(false);
}
else if ( source == btnCancel ) {
cancelled = true;
setVisible(false);
}
}
public static void main(String[] args) {
GoogleCaptchaDialog d = new GoogleCaptchaDialog();
try {
d.setCaptchaUrl( new URL( "http://www.failbetterfarm.com/" ) );
} catch ( MalformedURLException e ) {
System.err.println( e.getMessage() );
}
d.setVisible(true);
System.out.println( "User entered: " + d.getCaptchaAnswer() );
System.exit(0);
}
}